
/********************************************************************

    My simple calculator.

    Revision history:
        Revision by Eugene Golubkov August 2017
        Revision by Eugene Golubkov Jule 2017
        Revision by Eugene Golubkov June 2017
        Revision by Eugene Golubkov May 2017
        Originally written by Eugene Golubkov
            ( directmail@yandex.ru ) May 2017

    Added in the new version:
        1. Fixed problem computing after the brackets.
        2. Fixed function to update user variables.

    About the program:
        In this calculator you can use:
        1. Floating point numbers.
        2. Following operators:
            '+'  - sum,
            '-'  - difference,
            '*'  - multiplication,
            '/'  - division,
            '%'  - modulo,
            '!'  - factorial an expression,
            '='  - an assignment (to the left of equal
                    sign variable) or comparison (if the left
                    number of expression).
        3. Braces:
            '{...}' - figure (priority),
            '(...)' - round.
        4. Any custom variables
           starting with Latin letters
           containing Latin letters,
           numbers and underscope,
           in particular, constant variables:
            'pi' - number pi (3.1415926535),
            'e'  - number e (2.7182818284).
        5. Function:
            'sqrt(...)'    - calculating
                             the square root,
            'pow(.,.)'     - number raised to a power,
            'info', 'help' - getting help.
        Press 'Space' to separate solutions.
        Press 'Enter' to execute commands.

    Algorithm:
        The program receives a custom string. All characters
        of the user-defined string are converted to tokens
        and stored in a vector with lexemes. Each token in the vector
        contains information: an identification symbol, a value,
        a string with a variable name.
        Then, among the lexemes, addition, multiplication, etc.
        are performed. Also operations with constants,
        like pi and e, and calculation of the expressions enclosed
        in the program, for example sqrt() and pow() are possible.
        After each operation, the token-operators or tokens-variables
        take the value of the result of the operation, and
        the remaining tokens participating in the operation
        are deleted. If there is only one variable between the open
        and closed parenthesis, or the operand of the token-bracket
        on both sides will be deleted.
        After all operations in the vector with lexemes, only
        1 lexeme with the result of the last operation remains.
        This value is the result of the calculations that
        are given to the user.

********************************************************************/

//-------------------------------------------

#include "std_lib_facilities.h"

//-------------------------------------------

#include "header.h"

//-------------------------------------------



/********************************************

    Function main().

********************************************/

//-------------------------------------------

int main()
try
{
    calculator_calculation();
    return 0;
}
// Treatment of unaccounted for custom errors
catch( ... )
{
    cerr << "\n...exception!\n\n";
    return 2;
}

//-------------------------------------------

